/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package protegido;

import com.opensymphony.xwork2.ActionSupport;
import constantes.FonolConstantes;
import fonol.entidades.Beneficiarios;
import fonol.entidades.Delegados;
import fonol.entidades.EstatusCandidato;
import fonol.entidades.Proyectos;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;
import org.apache.struts2.interceptor.SessionAware;
import protegido.util.ProtegidoUtil;

/**
 *
 * @author fredfred2
 */
public class EvaluaProyecto extends ActionSupport implements SessionAware{

    Map session;
    private Beneficiarios beneficiario;
    private String estatuse;
    private List<EstatusCandidato> estatuses;
    private Integer id;
    private String comentario;
    private String mensaje;
    private Proyectos proyecto;
    private Delegados delegado;

    @Override
    public void validate() {
        Delegados del=(Delegados) session.get(FonolConstantes.OBJETO_USER);
        setProyecto(new ProtegidoUtil().regresaProyecto(getId()));
        logea("EvaluaProyecto.validate.estatuse:"+getEstatuse());
        if(getEstatuse()!=null&&
           getProyecto()!=null&&
           getEstatuse().equals("ACEPTADO")&&
           getProyecto().getEstatus()!=EstatusCandidato.ACEPTADO&&
           !new ProtegidoUtil().hayFondos(getProyecto(),del)){
            addActionError("Esta mal");
            setMensaje("No hay suficientes fondos");
        }
    }
    
    private void logea(String m){
        Logger log=Logger.getLogger(EvaluaProyecto.class.getName());
        log.info(m);
    }
    @Override
    public String execute() {
        setBeneficiario(new ProtegidoUtil().calificaProyecto(getId(),getEstatuse(),getComentario()));
        setDelegado(getDelegado());
        return SUCCESS;
    }
    
    public List<EstatusCandidato> getEstatuses() {
        List<EstatusCandidato> auxCandidatos=new ArrayList<EstatusCandidato>();
        for(EstatusCandidato e:EstatusCandidato.values())
            auxCandidatos.add(e);
        return auxCandidatos;
    }

    public void setEstatuses(List<EstatusCandidato> estatuses) {
        this.estatuses=estatuses;
    }

    public Beneficiarios getBeneficiario() {
        return beneficiario;
    }

    public void setBeneficiario(Beneficiarios beneficiario) {
        this.beneficiario = beneficiario;
    }

    public String getEstatuse() {
        return estatuse;
    }

    public void setEstatuse(String estatuse) {
        this.estatuse = estatuse;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getComentario() {
        return comentario;
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    public String getMensaje() {
        return mensaje;
    }

    public void setMensaje(String mensaje) {
        this.mensaje = mensaje;
    }

    public Proyectos getProyecto() {
        return proyecto;
    }

    public void setProyecto(Proyectos proyecto) {
        this.proyecto = proyecto;
    }

    public void setSession(Map arg0) {
        this.session=arg0;
    }
    public Delegados getDelegado() {
        
        return (Delegados) session.get(FonolConstantes.OBJETO_USER);
    }

    public void setDelegado(Delegados delegado) {
        this.delegado = delegado;
    }

}
